package com.cencat.route.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 司机统计信息VO
 * 
 * @author cencat
 * @version 1.0
 * @since 2024-01-01
 */
@Data
@Schema(description = "司机统计信息")
public class DriverStatisticsVO {

    @Schema(description = "总司机数量")
    private Long totalDriverCount;

    @Schema(description = "活跃司机数量")
    private Long activeDriverCount;

    @Schema(description = "在线司机数量")
    private Long onlineDriverCount;

    @Schema(description = "离线司机数量")
    private Long offlineDriverCount;

    @Schema(description = "忙碌司机数量")
    private Long busyDriverCount;

    @Schema(description = "空闲司机数量")
    private Long freeDriverCount;

    @Schema(description = "已认证司机数量")
    private Long verifiedDriverCount;

    @Schema(description = "未认证司机数量")
    private Long unverifiedDriverCount;

    @Schema(description = "认证中司机数量")
    private Long verifyingDriverCount;

    @Schema(description = "认证失败司机数量")
    private Long verificationFailedDriverCount;

    @Schema(description = "今日新增司机数量")
    private Long todayNewDriverCount;

    @Schema(description = "本周新增司机数量")
    private Long weekNewDriverCount;

    @Schema(description = "本月新增司机数量")
    private Long monthNewDriverCount;

    @Schema(description = "平均年龄")
    private BigDecimal averageAge;

    @Schema(description = "平均驾龄")
    private BigDecimal averageDrivingExperience;

    @Schema(description = "平均信用分数")
    private BigDecimal averageCreditScore;

    @Schema(description = "最高信用分数")
    private BigDecimal maxCreditScore;

    @Schema(description = "最低信用分数")
    private BigDecimal minCreditScore;

    @Schema(description = "A级信用司机数量")
    private Long creditLevelACount;

    @Schema(description = "B级信用司机数量")
    private Long creditLevelBCount;

    @Schema(description = "C级信用司机数量")
    private Long creditLevelCCount;

    @Schema(description = "D级信用司机数量")
    private Long creditLevelDCount;

    @Schema(description = "统计时间")
    private LocalDateTime statisticsTime;

}